package ww;

public class J02_Operators {

	// 연산자 operator
	// 컴퓨터 프로그램은 특정 기능을 수행할 작업들로 구성됨
	// 연산자는 이러한 작업을 표현하는 기호 
	// 작업에는 더하기, 뺴기, 곱하기, 나누기, 비트 이동 등이 있음
	// 연산자는 한/두/세 개의 피 연산자에서 작업을 수행함
	// 피 연산자operand 는 작업의 대상을 의미
	public static void main(String[] args) {
		// 1.단항 연산자 : ++, --, !
		int val1 = 10;
		int val2 = ++val1;			// val1 = val1 + 1;(증가)
		int val3 = --val1;			// val1 = val1 - 1; (감소)
		boolean isMarried = true;
		// 2. 산술 연산자 : +, -, *, /, %
		int op1 = 123;
		int op2 = 102;
		int op3 = 123;
		int op4 = 23;
		int plus = op1 + op2;
		int sub = op1 - op2;
		int mul = op1 * op2;
		int div = op1 / op2;   // 나누기
			// 정수를 정수로 나누면 결과도 정수 
		// 
			// 실수를 정수로 나누면 결과는 실수 수식int div2 = op1 / (float) op2;의 결과 유형과 그것을 저장하는
			// 변수의 서로  유형은 일치해야 함 
		int mod = op1 % op2;   //몫
			float div2 = op1 / (float) op2;
			float div3 = op3 / (float) op4;
			double div4 = op3 / (float) op4;
			double div5 = op3 / (double) op4;
				// 실수 형 변환에 따라 오차가 발생할 수도 있음
				// Math 클래스를 이용하면 오차를 줄일 수 있음
			
			//3. 관계/동등 연산자 : >, <, >=, <=, ==, !=
			boolean rel1 = 100 > 150;
			boolean rel2 = 100 < 150;
			boolean rel3 = 100 >=  150;
			boolean rel4 = 100 <=  150;
			boolean rel5 = op1 ==  op2;
			boolean rel6 = op3 !=  op4;
			// 조건 연산자 : AND(&&) , OR(||) , NOT(!) , ? :\
			boolean cond1 = (100 > 150) && (op1 == op2);
			// short-circuit 연산
			// 조건 연산 처리시 첫 째 항의 결과로 의해  전체 수식의 결과를 바로 알수 있는 경우
			// 나머지 항의 수식은 연산하지 않는다
			boolean cond2 = (op1 == op2) && (100 > 150);
			boolean cond3 = (100 > 150) || (op1 == op2);
			char cond4 = (op1 == op2) ? '정':'오';
				// 삼항 연산자 ? : 
				// 형식은 (조건식) ? 참일떄 처리 : 거짓일떄 처리;
			
			// 4.대입 연산자 :  =, +=, -=, *=, /=, %=
			int assg1 = 100;
			int assg2 = 120;
			int assg3 = 170;;
			int assg4 = 200;;
			int assg5 = 230;;
			assg1 += 200;		// assg1 = assg1 + 200;
			assg2 -= 200;		// assg2 = assg2 - 200;
			assg3 *= 200;		// assg3 = assg3 * 200;
			assg4 /= 200;		// assg4 = assg4 / 200;
			assg5 %= 200;		// assg5 = assg5 % 200;
		// 결과 출력
		System.out.println(val2);
		System.out.println(val3);
		System.out.println(!isMarried);
		System.out.println(plus);
		System.out.println(sub);
		System.out.println(mul);
		System.out.println(div);
		System.out.println(mod);
		System.out.println(div2);
		System.out.println(div3);
		System.out.println(div4);
		System.out.println(div5);
		System.out.println(rel1);
		System.out.println(rel2);
		System.out.println(rel3);
		System.out.println(rel4);
		System.out.println("rel :" +rel5);
		System.out.println("rel :" +rel6);
		System.out.println(cond1);
		System.out.println(cond2);
		System.out.println(cond3);
		System.out.println(cond4);
		System.out.println(assg1);
		System.out.println(assg2);
		System.out.println(assg3);
		System.out.println(assg4);
		System.out.println(assg5);

	
	}

}
